Skip to content

Conversation

@Tur8008
Copy link
Contributor

@Tur8008 Tur8008 commented Jan 5, 2017

Ошибка воспроизводится если в системе установлены как платформа 8.3 так и 8.2.

Соответственно в файле 1cestart.cfg:
InstalledLocation=C:\Program Files (x86)\1cv8
InstalledLocation=C:\Program Files (x86)\1cv82

При этом переменную версия платформы мы определяем как 8.3

  1. В текущей реализации кода стр. 495 v8runner.os реализован обход массива из 2-х выше указанных каталогов. Для каждой комбинации из возможных путей и маски версии платформы производится поиск файлов. Результат поиска присваивается переменной МассивФайлов. Так как присваивание происходит на каждом витке цикла, то происходит потеря результатов поиска в результате предыдущего витка. Если мы ищем версии по маске 8.3, то результаты поиска уничтожаются на втором витке цикла (для варианта InstalledLocation=C:\Program Files (x86)\1cv82). С учетом что маске 8.3 по последнему варианту нет соответствий, в результате скрипт не находит ни одной версии платформы.
  2. Переменной ВозможныйПуть присваивается последнее значение коллекции каталогов установке платформы, что тоже приводит к ошибкам в случае если путь "C:\Program Files (x86)\1cv82", а поиск осуществляется для платформы 8.3.
  3. При определении максимальной версии платформы предлагаю исключить варианты в которых отсутствует файл 1cv8.exe. Это возможно когда, например, установлен тонкий клиент или каталог пуст в результате удаления платформы.

src/v8runner.os Outdated

Функция ПутьКТонкомуКлиенту1С(Знач ПутьКПлатформе1С = "") Экспорт
Лог.Отладка("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">");
Сообщить("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если данный лог нужен всегда (в чем я сомневаюсь), то стоит использовать Лог.Информация()
Если это все же отладочная информация, то просьба вернуть обратно

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, это отладочная информация:) По началу вообще не знал как это дебажить, поэтому менял логгирование на сообщить. Убрал в очередном коммите

src/v8runner.os Outdated
ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей);

Для каждого Эл Из МассивПутей Цикл
Лог.Отладка(Эл);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Надо либо дополнить сообщение лога (что это за вывод), либо убрать вовсе

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Убрал, отладочная информация

@nixel2007
Copy link
Member

По пункту 3 -
Не всегда нужен именно Конфигуратор - часто бывает необходимо просто открыть 1с с какой-то версией, часто хватает просто тонкого клиента и передачи ему параметров или обработки через Execute.
Думаю, можно добавить информационное или отладочное сообщение, что не найден файл 1cv8,и часть функциональности не будет доступна.
А вот пропуск пустых каталогов идея хорошая, но нужно искать и 1cv8 и 1cv8c

@nixel2007
Copy link
Member

В остальном спасибо за пулл реквест! Посмотри мои замечания, пожалуйста.

Copy link
Contributor Author

@Tur8008 Tur8008 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По 3-му пункту столкнулся с подобным исключением. У меня максимальной версией стоял тонкий клиент, который ставится автоматически сервером если версия сервера и клиента различаются. Скрипт выдавал сообщение, что файл с суффиксом 1cv8.exe не существует. Поэтому я вставил в код определяющий максимальную версию проверку на присутствие файла. Можно добавить поиск 1cv8c конечно, но это не однозначная ситуация - может не быть 1cv8.exe при этом ...

src/v8runner.os Outdated

Функция ПутьКТонкомуКлиенту1С(Знач ПутьКПлатформе1С = "") Экспорт
Лог.Отладка("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">");
Сообщить("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">");
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, это отладочная информация:) По началу вообще не знал как это дебажить, поэтому менял логгирование на сообщить. Убрал в очередном коммите

src/v8runner.os Outdated
ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей);

Для каждого Эл Из МассивПутей Цикл
Лог.Отладка(Эл);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Убрал, отладочная информация

src/v8runner.os Outdated
КонецЕсли;

Лог.Отладка("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">");
Сообщить("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Последнее осталось? :)

@nixel2007
Copy link
Member

👍
Спасибо! Полезно, часто видел в чате, что были непонятные проблемы поиска.

@nixel2007 nixel2007 merged commit c80660f into oscript-library:master Jan 6, 2017
@nixel2007
Copy link
Member

Теперь не забыть бы обновить в хабе. Но это только после праздников.

@Tur8008
Copy link
Contributor Author

Tur8008 commented Jan 6, 2017

ОК, здорово! Спасибо за отклик и за проект в целом!

@nixel2007
Copy link
Member

@Tur8008 выложено в хаб под версией 0.5.0
Можно забирать. Еще раз спасибо!

@Tur8008
Copy link
Contributor Author

Tur8008 commented Jan 6, 2017

Здорово, и вам спасибо! Хотел обновить через opm update v8runner, но загрузилась старая версия. Из какого репозитория opm грузит?

@nixel2007
Copy link
Member

@Tur8008 из hub.oscript.io
Дайте вывод команды opm list
если пакеты будут выводиться без версий, то сначала обновите сам opm

@EvilBeaver
Copy link
Member

EvilBeaver commented Jan 7, 2017

Спасибо, парни, за оперативную починку и публикацию!

P.S. Опенсорс рулит :)

@Tur8008
Copy link
Contributor Author

Tur8008 commented Jan 8, 2017

Андрей, так жить значительно веселее:) Радует, что это у нас в 1с-сообществе происходит!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants